#!/bin/bash

# ========================================
# DevToolsNav SSL 证书自动配置脚本
# 使用 Let's Encrypt 免费 SSL 证书
# ========================================

set -e

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

DOMAIN="devtoolsnav.com"
WWW_DOMAIN="www.devtoolsnav.com"
EMAIL="1123654054@qq.com"  # 请修改为你的邮箱

echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo -e "${GREEN}🔒 DevToolsNav SSL 证书配置${NC}"
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}\n"

# ========================================
# 1. 检查 certbot 是否已安装
# ========================================
echo -e "${YELLOW}📦 检查 certbot...${NC}"
if ! command -v certbot &> /dev/null; then
    echo -e "${YELLOW}正在安装 certbot...${NC}"
    sudo apt update
    sudo apt install -y certbot python3-certbot-nginx
    echo -e "${GREEN}✅ certbot 安装完成${NC}\n"
else
    echo -e "${GREEN}✅ certbot 已安装${NC}\n"
fi

# ========================================
# 2. 检查域名是否可访问
# ========================================
echo -e "${YELLOW}🌐 检查域名解析...${NC}"
if curl -s -o /dev/null -w "%{http_code}" http://${DOMAIN} | grep -q "200\|301\|302"; then
    echo -e "${GREEN}✅ 域名 ${DOMAIN} 可访问${NC}\n"
else
    echo -e "${RED}❌ 域名 ${DOMAIN} 无法访问，请检查 DNS 解析和 Nginx 配置${NC}"
    exit 1
fi

# ========================================
# 3. 获取 SSL 证书
# ========================================
echo -e "${YELLOW}🔐 获取 SSL 证书...${NC}"
echo -e "${BLUE}提示：请确保邮箱地址正确，用于接收证书到期提醒${NC}\n"

# 使用 certbot nginx 插件自动配置
sudo certbot --nginx \
    -d ${DOMAIN} \
    -d ${WWW_DOMAIN} \
    --non-interactive \
    --agree-tos \
    --email ${EMAIL} \
    --redirect

if [ $? -eq 0 ]; then
    echo -e "\n${GREEN}✅ SSL 证书配置成功！${NC}\n"
else
    echo -e "\n${RED}❌ SSL 证书配置失败${NC}"
    echo -e "${YELLOW}请检查：${NC}"
    echo -e "  1. 域名是否正确解析到服务器 IP"
    echo -e "  2. 80 端口是否开放"
    echo -e "  3. Nginx 配置是否正确"
    exit 1
fi

# ========================================
# 4. 测试自动续期
# ========================================
echo -e "${YELLOW}🔄 测试证书自动续期...${NC}"
sudo certbot renew --dry-run

if [ $? -eq 0 ]; then
    echo -e "${GREEN}✅ 自动续期配置成功${NC}\n"
else
    echo -e "${YELLOW}⚠️  自动续期测试失败，但证书已安装${NC}\n"
fi

# ========================================
# 5. 显示证书信息
# ========================================
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo -e "${GREEN}🎉 SSL 配置完成！${NC}"
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}\n"

echo -e "${GREEN}📋 证书信息：${NC}"
sudo certbot certificates

echo -e "\n${GREEN}🌐 现在可以通过 HTTPS 访问：${NC}"
echo -e "  - https://${DOMAIN}"
echo -e "  - https://${WWW_DOMAIN}"

echo -e "\n${YELLOW}💡 提示：${NC}"
echo -e "  - 证书有效期：90 天"
echo -e "  - 自动续期：已配置 cron 任务"
echo -e "  - 续期命令：sudo certbot renew"
echo -e ""

